package OODay05_Day11;

public class Day11 {
    public static void main(String[] args) {
        //访问控制修饰符
        //作用 用于保护数据的安全(隐藏数据 暴露行为) 实现封装
        //把对象的属性 行为封装到类中 这是第一次封装
        //设计 1 数据(成员变量)私有化(private)
        //    2 行为(方法)大部分公开化(public)
       /* class Card{
            private String cardID;//-------------------私有化
            private String cardPwd;
            private double balance;
            public boolean checkPwd(String pwd){//-----检测密码是否正确(方法公开)
                if (pwd与cardPwd是否相同){
                    return true;
                }else{
                    return false;
                }
            }

        }*/
        //修饰符分类
        //    1 public          公开的     所有类      (常用)
        //    2 private         私有的     本类        (常用)
        //    3 protected       受保护的   本类 子类(不能访问子类变量 只能访问方法) 同包类
        //    4 默认的 什么也不写  默认的     本类 同包类

        //范围 : private < 默认的 < protected < public

        //类的访问权限只能是public或默认的 类中成员的访问权限如上4种都可以

        //静态的static
        //静态变量 由static修饰的成员变量被叫做静态变量
        //成员变量有两种
           //1 实例变量 没有static修饰      (  int a  ) 属于对象  存储在堆     有几个对象就有几份
           //访问时由对象/引用访问
           //2 静态变量 有static修饰 (  static int a  ) 属于类   存储在方法区  类有一份 所以静态变量也只有一份
           //由类名访问

        //什么时候用静态变量
        //对象所共享的数据

        //静态块
        //静态变量是修饰变量的 静态块是修饰语句块的{大括号内被执行的}
        //由static修饰的语句块就是静态块 static{}
        //静态的就属于类 静态块属于类
        //静态块 类被加载的时候自动执行 很早执行 加载方法区时使用
        //因为类只加载一次 所以静态块也只执行一次

        //何时用 初始化/加载静态资源
        //例如游戏 一开始加载的时候慢 就是在加载静态资源 把硬盘里的内容加载到内存中 后期访问时速度会很快
        //例如学生信息 班级一致 则可以加入静态块初始化 只需要加载一次 避免重复加载 硬件负担

        //静态方法(难点)
        //由static修饰的方法就是静态方法
        //属于类 存在于方法区 只存在一份
        //常常通过类名点访问
        //静态方法中 不能直接访问实例成员(变量,方法等都需要通过对象访问)
        //何时用 方法的操作与对象无关(不需要访问对象的属性/行为)
           //想访问对象的内容 一般不设计为静态方法


        //static final---常量(重点)
           //这两个关键词常常一起使用 二者单独应用率都不高
        //由static和final共同修饰的成员变量 称为常量/静态常量(常量一定是静态的 因为被static修饰)
        //建议 常量名所有字母都大写 多个单词之间用 "_" 隔开
        //必须声明同时做初始化
        //常常通过类名来访问 并且不能更改 (static和final的特点结合)
        //常量在编译时 会被替换为具体的数 效率高
           //常量的访问权限一般都是公开的 一般都是要被别人用的 public static final

        //内存管理都是在运行期执行

        //何时用 在程序运行过程中<数据永远不变> 并且<经常使用>


        //枚举
        //罗列的是一个个对象
        //枚举是一种引用类型 (数组 类 接口 枚举)
        //枚举类型的<对象数目>是<固定>的-------类的对象 想造几个造几个
           //常常用于定义<一组常量> 因此枚举数目固定且不能更改
        //例如 一年四季 季节只有四个 ; 星期 周一到周日 ; 订单状态:未付款 已付款等等...数目固定且不能更改
        //不能更改的是 本质原因 枚举的构造方法是私有的
        //由enum定义
        //枚举的第一行默认都是罗列枚举对象名称 多个对象之间用逗号隔开

        //枚举默认都继承自Enum类 其中提供了一组方法供我们使用


        //接口
        //1 重写接口方法必须加public
        //接口中的成员的默认权限为public 重写方法时有要求 派生类方法的访问权限必须大于或等于超类中的
        //接口需要制定标准 所以需要public
        //接口中默认有public abstract













    }
}
